
// Copyright (C) 2009-2011 Luca Piccioni
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program.  If not, see <http://www.gnu.org/licenses/>.

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Reflection;
using System.Runtime.InteropServices;
using System.Text;

#pragma warning disable 1572, 1573

namespace Derm.OpenGL {

	/// <summary>
	/// Implementation of the OpenGL specification 
	/// </summary>
	public unsafe partial class Glx : ProcLoader
	{

		#region ARB_create_context_profile

		/// <summary>
		/// Value for CONTEXT_PROFILE_MASK_ARB symbol (0x9126).
		/// </summary>
		public const int CONTEXT_PROFILE_MASK_ARB = 0x9126;

		#endregion

		#region EXT_swap_control

		/// <summary>
		/// Value for SWAP_INTERVAL_EXT symbol (0x20F1).
		/// </summary>
		public const int SWAP_INTERVAL_EXT = 0x20F1;
		/// <summary>
		/// Value for MAX_SWAP_INTERVAL_EXT symbol (0x20F2).
		/// </summary>
		public const int MAX_SWAP_INTERVAL_EXT = 0x20F2;

		#endregion

		#region EXT_swap_control_tear

		/// <summary>
		/// Value for LATE_SWAPS_TEAR_EXT symbol (0x20F3).
		/// </summary>
		public const int LATE_SWAPS_TEAR_EXT = 0x20F3;

		#endregion

		#region GLX_AMD_gpu_association

		/// <summary>
		/// Value for GPU_VENDOR_AMD symbol (0x1F00).
		/// </summary>
		public const int GPU_VENDOR_AMD = 0x1F00;
		/// <summary>
		/// Value for GPU_RENDERER_STRING_AMD symbol (0x1F01).
		/// </summary>
		public const int GPU_RENDERER_STRING_AMD = 0x1F01;
		/// <summary>
		/// Value for GPU_OPENGL_VERSION_STRING_AMD symbol (0x1F02).
		/// </summary>
		public const int GPU_OPENGL_VERSION_STRING_AMD = 0x1F02;
		/// <summary>
		/// Value for GPU_FASTEST_TARGET_GPUS_AMD symbol (0x21A2).
		/// </summary>
		public const int GPU_FASTEST_TARGET_GPUS_AMD = 0x21A2;
		/// <summary>
		/// Value for GPU_RAM_AMD symbol (0x21A3).
		/// </summary>
		public const int GPU_RAM_AMD = 0x21A3;
		/// <summary>
		/// Value for GPU_CLOCK_AMD symbol (0x21A4).
		/// </summary>
		public const int GPU_CLOCK_AMD = 0x21A4;
		/// <summary>
		/// Value for GPU_NUM_PIPES_AMD symbol (0x21A5).
		/// </summary>
		public const int GPU_NUM_PIPES_AMD = 0x21A5;
		/// <summary>
		/// Value for GPU_NUM_SIMD_AMD symbol (0x21A6).
		/// </summary>
		public const int GPU_NUM_SIMD_AMD = 0x21A6;
		/// <summary>
		/// Value for GPU_NUM_RB_AMD symbol (0x21A7).
		/// </summary>
		public const int GPU_NUM_RB_AMD = 0x21A7;
		/// <summary>
		/// Value for GPU_NUM_SPI_AMD symbol (0x21A8).
		/// </summary>
		public const int GPU_NUM_SPI_AMD = 0x21A8;

		#endregion

		#region GLX_ARB_create_context_robustness

		/// <summary>
		/// Value for LOSE_CONTEXT_ON_RESET_ARB symbol (0x8252).
		/// </summary>
		public const int LOSE_CONTEXT_ON_RESET_ARB = 0x8252;
		/// <summary>
		/// Value for CONTEXT_RESET_NOTIFICATION_STRATEGY_ARB symbol (0x8256).
		/// </summary>
		public const int CONTEXT_RESET_NOTIFICATION_STRATEGY_ARB = 0x8256;
		/// <summary>
		/// Value for NO_RESET_NOTIFICATION_ARB symbol (0x8261).
		/// </summary>
		public const int NO_RESET_NOTIFICATION_ARB = 0x8261;

		#endregion

		#region GLXAttribute

		/// <summary>
		/// Value for USE_GL symbol (1).
		/// </summary>
		public const int USE_GL = 1;
		/// <summary>
		/// Value for BUFFER_SIZE symbol (2).
		/// </summary>
		public const int BUFFER_SIZE = 2;
		/// <summary>
		/// Value for LEVEL symbol (3).
		/// </summary>
		public const int LEVEL = 3;
		/// <summary>
		/// Value for RGBA symbol (4).
		/// </summary>
		public const int RGBA = 4;
		/// <summary>
		/// Value for DOUBLEBUFFER symbol (5).
		/// </summary>
		public const int DOUBLEBUFFER = 5;
		/// <summary>
		/// Value for STEREO symbol (6).
		/// </summary>
		public const int STEREO = 6;
		/// <summary>
		/// Value for AUX_BUFFERS symbol (7).
		/// </summary>
		public const int AUX_BUFFERS = 7;
		/// <summary>
		/// Value for RED_SIZE symbol (8).
		/// </summary>
		public const int RED_SIZE = 8;
		/// <summary>
		/// Value for GREEN_SIZE symbol (9).
		/// </summary>
		public const int GREEN_SIZE = 9;
		/// <summary>
		/// Value for BLUE_SIZE symbol (10).
		/// </summary>
		public const int BLUE_SIZE = 10;
		/// <summary>
		/// Value for ALPHA_SIZE symbol (11).
		/// </summary>
		public const int ALPHA_SIZE = 11;
		/// <summary>
		/// Value for DEPTH_SIZE symbol (12).
		/// </summary>
		public const int DEPTH_SIZE = 12;
		/// <summary>
		/// Value for STENCIL_SIZE symbol (13).
		/// </summary>
		public const int STENCIL_SIZE = 13;
		/// <summary>
		/// Value for ACCUM_RED_SIZE symbol (14).
		/// </summary>
		public const int ACCUM_RED_SIZE = 14;
		/// <summary>
		/// Value for ACCUM_GREEN_SIZE symbol (15).
		/// </summary>
		public const int ACCUM_GREEN_SIZE = 15;
		/// <summary>
		/// Value for ACCUM_BLUE_SIZE symbol (16).
		/// </summary>
		public const int ACCUM_BLUE_SIZE = 16;
		/// <summary>
		/// Value for ACCUM_ALPHA_SIZE symbol (17).
		/// </summary>
		public const int ACCUM_ALPHA_SIZE = 17;
		/// <summary>
		/// Value for CONFIG_CAVEAT symbol (0x20).
		/// </summary>
		public const int CONFIG_CAVEAT = 0x20;
		/// <summary>
		/// Value for X_VISUAL_TYPE symbol (0x22).
		/// </summary>
		public const int X_VISUAL_TYPE = 0x22;
		/// <summary>
		/// Value for TRANSPARENT_TYPE symbol (0x23).
		/// </summary>
		public const int TRANSPARENT_TYPE = 0x23;
		/// <summary>
		/// Value for TRANSPARENT_INDEX_VALUE symbol (0x24).
		/// </summary>
		public const int TRANSPARENT_INDEX_VALUE = 0x24;
		/// <summary>
		/// Value for TRANSPARENT_RED_VALUE symbol (0x25).
		/// </summary>
		public const int TRANSPARENT_RED_VALUE = 0x25;
		/// <summary>
		/// Value for TRANSPARENT_GREEN_VALUE symbol (0x26).
		/// </summary>
		public const int TRANSPARENT_GREEN_VALUE = 0x26;
		/// <summary>
		/// Value for TRANSPARENT_BLUE_VALUE symbol (0x27).
		/// </summary>
		public const int TRANSPARENT_BLUE_VALUE = 0x27;
		/// <summary>
		/// Value for TRANSPARENT_ALPHA_VALUE symbol (0x28).
		/// </summary>
		public const int TRANSPARENT_ALPHA_VALUE = 0x28;
		/// <summary>
		/// Value for DONT_CARE symbol (0xFFFFFFFF).
		/// </summary>
		public const uint DONT_CARE = 0xFFFFFFFF;
		/// <summary>
		/// Value for NONE symbol (0x8000).
		/// </summary>
		public const int NONE = 0x8000;
		/// <summary>
		/// Value for SLOW_CONFIG symbol (0x8001).
		/// </summary>
		public const int SLOW_CONFIG = 0x8001;
		/// <summary>
		/// Value for TRUE_COLOR symbol (0x8002).
		/// </summary>
		public const int TRUE_COLOR = 0x8002;
		/// <summary>
		/// Value for DIRECT_COLOR symbol (0x8003).
		/// </summary>
		public const int DIRECT_COLOR = 0x8003;
		/// <summary>
		/// Value for PSEUDO_COLOR symbol (0x8004).
		/// </summary>
		public const int PSEUDO_COLOR = 0x8004;
		/// <summary>
		/// Value for STATIC_COLOR symbol (0x8005).
		/// </summary>
		public const int STATIC_COLOR = 0x8005;
		/// <summary>
		/// Value for GRAY_SCALE symbol (0x8006).
		/// </summary>
		public const int GRAY_SCALE = 0x8006;
		/// <summary>
		/// Value for STATIC_GRAY symbol (0x8007).
		/// </summary>
		public const int STATIC_GRAY = 0x8007;
		/// <summary>
		/// Value for TRANSPARENT_RGB symbol (0x8008).
		/// </summary>
		public const int TRANSPARENT_RGB = 0x8008;
		/// <summary>
		/// Value for TRANSPARENT_INDEX symbol (0x8009).
		/// </summary>
		public const int TRANSPARENT_INDEX = 0x8009;
		/// <summary>
		/// Value for VISUAL_ID symbol (0x800B).
		/// </summary>
		public const int VISUAL_ID = 0x800B;
		/// <summary>
		/// Value for SCREEN symbol (0x800C).
		/// </summary>
		public const int SCREEN = 0x800C;
		/// <summary>
		/// Value for NON_CONFORMANT_CONFIG symbol (0x800D).
		/// </summary>
		public const int NON_CONFORMANT_CONFIG = 0x800D;
		/// <summary>
		/// Value for DRAWABLE_TYPE symbol (0x8010).
		/// </summary>
		public const int DRAWABLE_TYPE = 0x8010;
		/// <summary>
		/// Value for RENDER_TYPE symbol (0x8011).
		/// </summary>
		public const int RENDER_TYPE = 0x8011;
		/// <summary>
		/// Value for X_RENDERABLE symbol (0x8012).
		/// </summary>
		public const int X_RENDERABLE = 0x8012;
		/// <summary>
		/// Value for FBCONFIG_ID symbol (0x8013).
		/// </summary>
		public const int FBCONFIG_ID = 0x8013;
		/// <summary>
		/// Value for RGBA_TYPE symbol (0x8014).
		/// </summary>
		public const int RGBA_TYPE = 0x8014;
		/// <summary>
		/// Value for COLOR_INDEX_TYPE symbol (0x8015).
		/// </summary>
		public const int COLOR_INDEX_TYPE = 0x8015;
		/// <summary>
		/// Value for MAX_PBUFFER_WIDTH symbol (0x8016).
		/// </summary>
		public const int MAX_PBUFFER_WIDTH = 0x8016;
		/// <summary>
		/// Value for MAX_PBUFFER_HEIGHT symbol (0x8017).
		/// </summary>
		public const int MAX_PBUFFER_HEIGHT = 0x8017;
		/// <summary>
		/// Value for MAX_PBUFFER_PIXELS symbol (0x8018).
		/// </summary>
		public const int MAX_PBUFFER_PIXELS = 0x8018;
		/// <summary>
		/// Value for PRESERVED_CONTENTS symbol (0x801B).
		/// </summary>
		public const int PRESERVED_CONTENTS = 0x801B;
		/// <summary>
		/// Value for LARGEST_PBUFFER symbol (0x801C).
		/// </summary>
		public const int LARGEST_PBUFFER = 0x801C;
		/// <summary>
		/// Value for WIDTH symbol (0x801D).
		/// </summary>
		public const int WIDTH = 0x801D;
		/// <summary>
		/// Value for HEIGHT symbol (0x801E).
		/// </summary>
		public const int HEIGHT = 0x801E;
		/// <summary>
		/// Value for EVENT_MASK symbol (0x801F).
		/// </summary>
		public const int EVENT_MASK = 0x801F;
		/// <summary>
		/// Value for DAMAGED symbol (0x8020).
		/// </summary>
		public const int DAMAGED = 0x8020;
		/// <summary>
		/// Value for SAVED symbol (0x8021).
		/// </summary>
		public const int SAVED = 0x8021;
		/// <summary>
		/// Value for WINDOW symbol (0x8022).
		/// </summary>
		public const int WINDOW = 0x8022;
		/// <summary>
		/// Value for PBUFFER symbol (0x8023).
		/// </summary>
		public const int PBUFFER = 0x8023;
		/// <summary>
		/// Value for PBUFFER_HEIGHT symbol (0x8040).
		/// </summary>
		public const int PBUFFER_HEIGHT = 0x8040;
		/// <summary>
		/// Value for PBUFFER_WIDTH symbol (0x8041).
		/// </summary>
		public const int PBUFFER_WIDTH = 0x8041;
		/// <summary>
		/// Value for VISUAL_CAVEAT_EXT symbol (0x20).
		/// </summary>
		public const int VISUAL_CAVEAT_EXT = 0x20;
		/// <summary>
		/// Value for X_VISUAL_TYPE_EXT symbol (0x22).
		/// </summary>
		public const int X_VISUAL_TYPE_EXT = 0x22;
		/// <summary>
		/// Value for TRANSPARENT_TYPE_EXT symbol (0x23).
		/// </summary>
		public const int TRANSPARENT_TYPE_EXT = 0x23;
		/// <summary>
		/// Value for TRANSPARENT_INDEX_VALUE_EXT symbol (0x24).
		/// </summary>
		public const int TRANSPARENT_INDEX_VALUE_EXT = 0x24;
		/// <summary>
		/// Value for TRANSPARENT_RED_VALUE_EXT symbol (0x25).
		/// </summary>
		public const int TRANSPARENT_RED_VALUE_EXT = 0x25;
		/// <summary>
		/// Value for TRANSPARENT_GREEN_VALUE_EXT symbol (0x26).
		/// </summary>
		public const int TRANSPARENT_GREEN_VALUE_EXT = 0x26;
		/// <summary>
		/// Value for TRANSPARENT_BLUE_VALUE_EXT symbol (0x27).
		/// </summary>
		public const int TRANSPARENT_BLUE_VALUE_EXT = 0x27;
		/// <summary>
		/// Value for TRANSPARENT_ALPHA_VALUE_EXT symbol (0x28).
		/// </summary>
		public const int TRANSPARENT_ALPHA_VALUE_EXT = 0x28;
		/// <summary>
		/// Value for NONE_EXT symbol (0x8000).
		/// </summary>
		public const int NONE_EXT = 0x8000;
		/// <summary>
		/// Value for SLOW_VISUAL_EXT symbol (0x8001).
		/// </summary>
		public const int SLOW_VISUAL_EXT = 0x8001;
		/// <summary>
		/// Value for TRUE_COLOR_EXT symbol (0x8002).
		/// </summary>
		public const int TRUE_COLOR_EXT = 0x8002;
		/// <summary>
		/// Value for DIRECT_COLOR_EXT symbol (0x8003).
		/// </summary>
		public const int DIRECT_COLOR_EXT = 0x8003;
		/// <summary>
		/// Value for PSEUDO_COLOR_EXT symbol (0x8004).
		/// </summary>
		public const int PSEUDO_COLOR_EXT = 0x8004;
		/// <summary>
		/// Value for STATIC_COLOR_EXT symbol (0x8005).
		/// </summary>
		public const int STATIC_COLOR_EXT = 0x8005;
		/// <summary>
		/// Value for GRAY_SCALE_EXT symbol (0x8006).
		/// </summary>
		public const int GRAY_SCALE_EXT = 0x8006;
		/// <summary>
		/// Value for STATIC_GRAY_EXT symbol (0x8007).
		/// </summary>
		public const int STATIC_GRAY_EXT = 0x8007;
		/// <summary>
		/// Value for TRANSPARENT_RGB_EXT symbol (0x8008).
		/// </summary>
		public const int TRANSPARENT_RGB_EXT = 0x8008;
		/// <summary>
		/// Value for TRANSPARENT_INDEX_EXT symbol (0x8009).
		/// </summary>
		public const int TRANSPARENT_INDEX_EXT = 0x8009;
		/// <summary>
		/// Value for SHARE_CONTEXT_EXT symbol (0x800A).
		/// </summary>
		public const int SHARE_CONTEXT_EXT = 0x800A;
		/// <summary>
		/// Value for VISUAL_ID_EXT symbol (0x800B).
		/// </summary>
		public const int VISUAL_ID_EXT = 0x800B;
		/// <summary>
		/// Value for SCREEN_EXT symbol (0x800C).
		/// </summary>
		public const int SCREEN_EXT = 0x800C;
		/// <summary>
		/// Value for NON_CONFORMANT_VISUAL_EXT symbol (0x800D).
		/// </summary>
		public const int NON_CONFORMANT_VISUAL_EXT = 0x800D;
		/// <summary>
		/// Value for DRAWABLE_TYPE_SGIX symbol (0x8010).
		/// </summary>
		public const int DRAWABLE_TYPE_SGIX = 0x8010;
		/// <summary>
		/// Value for RENDER_TYPE_SGIX symbol (0x8011).
		/// </summary>
		public const int RENDER_TYPE_SGIX = 0x8011;
		/// <summary>
		/// Value for X_RENDERABLE_SGIX symbol (0x8012).
		/// </summary>
		public const int X_RENDERABLE_SGIX = 0x8012;
		/// <summary>
		/// Value for FBCONFIG_ID_SGIX symbol (0x8013).
		/// </summary>
		public const int FBCONFIG_ID_SGIX = 0x8013;
		/// <summary>
		/// Value for RGBA_TYPE_SGIX symbol (0x8014).
		/// </summary>
		public const int RGBA_TYPE_SGIX = 0x8014;
		/// <summary>
		/// Value for COLOR_INDEX_TYPE_SGIX symbol (0x8015).
		/// </summary>
		public const int COLOR_INDEX_TYPE_SGIX = 0x8015;
		/// <summary>
		/// Value for MAX_PBUFFER_WIDTH_SGIX symbol (0x8016).
		/// </summary>
		public const int MAX_PBUFFER_WIDTH_SGIX = 0x8016;
		/// <summary>
		/// Value for MAX_PBUFFER_HEIGHT_SGIX symbol (0x8017).
		/// </summary>
		public const int MAX_PBUFFER_HEIGHT_SGIX = 0x8017;
		/// <summary>
		/// Value for MAX_PBUFFER_PIXELS_SGIX symbol (0x8018).
		/// </summary>
		public const int MAX_PBUFFER_PIXELS_SGIX = 0x8018;
		/// <summary>
		/// Value for OPTIMAL_PBUFFER_WIDTH_SGIX symbol (0x8019).
		/// </summary>
		public const int OPTIMAL_PBUFFER_WIDTH_SGIX = 0x8019;
		/// <summary>
		/// Value for OPTIMAL_PBUFFER_HEIGHT_SGIX symbol (0x801A).
		/// </summary>
		public const int OPTIMAL_PBUFFER_HEIGHT_SGIX = 0x801A;
		/// <summary>
		/// Value for PRESERVED_CONTENTS_SGIX symbol (0x801B).
		/// </summary>
		public const int PRESERVED_CONTENTS_SGIX = 0x801B;
		/// <summary>
		/// Value for LARGEST_PBUFFER_SGIX symbol (0x801C).
		/// </summary>
		public const int LARGEST_PBUFFER_SGIX = 0x801C;
		/// <summary>
		/// Value for WIDTH_SGIX symbol (0x801D).
		/// </summary>
		public const int WIDTH_SGIX = 0x801D;
		/// <summary>
		/// Value for HEIGHT_SGIX symbol (0x801E).
		/// </summary>
		public const int HEIGHT_SGIX = 0x801E;
		/// <summary>
		/// Value for EVENT_MASK_SGIX symbol (0x801F).
		/// </summary>
		public const int EVENT_MASK_SGIX = 0x801F;
		/// <summary>
		/// Value for DAMAGED_SGIX symbol (0x8020).
		/// </summary>
		public const int DAMAGED_SGIX = 0x8020;
		/// <summary>
		/// Value for SAVED_SGIX symbol (0x8021).
		/// </summary>
		public const int SAVED_SGIX = 0x8021;
		/// <summary>
		/// Value for WINDOW_SGIX symbol (0x8022).
		/// </summary>
		public const int WINDOW_SGIX = 0x8022;
		/// <summary>
		/// Value for PBUFFER_SGIX symbol (0x8023).
		/// </summary>
		public const int PBUFFER_SGIX = 0x8023;
		/// <summary>
		/// Value for DIGITAL_MEDIA_PBUFFER_SGIX symbol (0x8024).
		/// </summary>
		public const int DIGITAL_MEDIA_PBUFFER_SGIX = 0x8024;
		/// <summary>
		/// Value for BLENDED_RGBA_SGIS symbol (0x8025).
		/// </summary>
		public const int BLENDED_RGBA_SGIS = 0x8025;
		/// <summary>
		/// Value for MULTISAMPLE_SUB_RECT_WIDTH_SGIS symbol (0x8026).
		/// </summary>
		public const int MULTISAMPLE_SUB_RECT_WIDTH_SGIS = 0x8026;
		/// <summary>
		/// Value for MULTISAMPLE_SUB_RECT_HEIGHT_SGIS symbol (0x8027).
		/// </summary>
		public const int MULTISAMPLE_SUB_RECT_HEIGHT_SGIS = 0x8027;
		/// <summary>
		/// Value for VISUAL_SELECT_GROUP_SGIX symbol (0x8028).
		/// </summary>
		public const int VISUAL_SELECT_GROUP_SGIX = 0x8028;
		/// <summary>
		/// Value for HYPERPIPE_ID_SGIX symbol (0x8030).
		/// </summary>
		public const int HYPERPIPE_ID_SGIX = 0x8030;
		/// <summary>
		/// Value for SAMPLE_BUFFERS_SGIS symbol (100000).
		/// </summary>
		public const int SAMPLE_BUFFERS_SGIS = 100000;
		/// <summary>
		/// Value for SAMPLES_SGIS symbol (100001).
		/// </summary>
		public const int SAMPLES_SGIS = 100001;
		/// <summary>
		/// Value for SAMPLE_BUFFERS_ARB symbol (100000).
		/// </summary>
		public const int SAMPLE_BUFFERS_ARB = 100000;
		/// <summary>
		/// Value for SAMPLES_ARB symbol (100001).
		/// </summary>
		public const int SAMPLES_ARB = 100001;
		/// <summary>
		/// Value for SAMPLE_BUFFERS symbol (100000).
		/// </summary>
		public const int SAMPLE_BUFFERS = 100000;
		/// <summary>
		/// Value for SAMPLES symbol (100001).
		/// </summary>
		public const int SAMPLES = 100001;
		/// <summary>
		/// Value for COVERAGE_SAMPLES_NV symbol (100001).
		/// </summary>
		public const int COVERAGE_SAMPLES_NV = 100001;
		/// <summary>
		/// Value for CONTEXT_MAJOR_VERSION_ARB symbol (0x2091).
		/// </summary>
		public const int CONTEXT_MAJOR_VERSION_ARB = 0x2091;
		/// <summary>
		/// Value for CONTEXT_MINOR_VERSION_ARB symbol (0x2092).
		/// </summary>
		public const int CONTEXT_MINOR_VERSION_ARB = 0x2092;
		/// <summary>
		/// Value for CONTEXT_FLAGS_ARB symbol (0x2094).
		/// </summary>
		public const int CONTEXT_FLAGS_ARB = 0x2094;
		/// <summary>
		/// Value for CONTEXT_ALLOW_BUFFER_BYTE_ORDER_MISMATCH_ARB symbol (0x2095).
		/// </summary>
		public const int CONTEXT_ALLOW_BUFFER_BYTE_ORDER_MISMATCH_ARB = 0x2095;
		/// <summary>
		/// Value for FLOAT_COMPONENTS_NV symbol (0x20B0).
		/// </summary>
		public const int FLOAT_COMPONENTS_NV = 0x20B0;
		/// <summary>
		/// Value for RGBA_UNSIGNED_FLOAT_TYPE_EXT symbol (0x20B1).
		/// </summary>
		public const int RGBA_UNSIGNED_FLOAT_TYPE_EXT = 0x20B1;
		/// <summary>
		/// Value for FRAMEBUFFER_SRGB_CAPABLE_ARB symbol (0x20B2).
		/// </summary>
		public const int FRAMEBUFFER_SRGB_CAPABLE_ARB = 0x20B2;
		/// <summary>
		/// Value for FRAMEBUFFER_SRGB_CAPABLE_EXT symbol (0x20B2).
		/// </summary>
		public const int FRAMEBUFFER_SRGB_CAPABLE_EXT = 0x20B2;
		/// <summary>
		/// Value for COLOR_SAMPLES_NV symbol (0x20B3).
		/// </summary>
		public const int COLOR_SAMPLES_NV = 0x20B3;
		/// <summary>
		/// Value for RGBA_FLOAT_TYPE_ARB symbol (0x20B9).
		/// </summary>
		public const int RGBA_FLOAT_TYPE_ARB = 0x20B9;
		/// <summary>
		/// Value for VIDEO_OUT_COLOR_NV symbol (0x20C3).
		/// </summary>
		public const int VIDEO_OUT_COLOR_NV = 0x20C3;
		/// <summary>
		/// Value for VIDEO_OUT_ALPHA_NV symbol (0x20C4).
		/// </summary>
		public const int VIDEO_OUT_ALPHA_NV = 0x20C4;
		/// <summary>
		/// Value for VIDEO_OUT_DEPTH_NV symbol (0x20C5).
		/// </summary>
		public const int VIDEO_OUT_DEPTH_NV = 0x20C5;
		/// <summary>
		/// Value for VIDEO_OUT_COLOR_AND_ALPHA_NV symbol (0x20C6).
		/// </summary>
		public const int VIDEO_OUT_COLOR_AND_ALPHA_NV = 0x20C6;
		/// <summary>
		/// Value for VIDEO_OUT_COLOR_AND_DEPTH_NV symbol (0x20C7).
		/// </summary>
		public const int VIDEO_OUT_COLOR_AND_DEPTH_NV = 0x20C7;
		/// <summary>
		/// Value for VIDEO_OUT_FRAME_NV symbol (0x20C8).
		/// </summary>
		public const int VIDEO_OUT_FRAME_NV = 0x20C8;
		/// <summary>
		/// Value for VIDEO_OUT_FIELD_1_NV symbol (0x20C9).
		/// </summary>
		public const int VIDEO_OUT_FIELD_1_NV = 0x20C9;
		/// <summary>
		/// Value for VIDEO_OUT_FIELD_2_NV symbol (0x20CA).
		/// </summary>
		public const int VIDEO_OUT_FIELD_2_NV = 0x20CA;
		/// <summary>
		/// Value for VIDEO_OUT_STACKED_FIELDS_1_2_NV symbol (0x20CB).
		/// </summary>
		public const int VIDEO_OUT_STACKED_FIELDS_1_2_NV = 0x20CB;
		/// <summary>
		/// Value for VIDEO_OUT_STACKED_FIELDS_2_1_NV symbol (0x20CC).
		/// </summary>
		public const int VIDEO_OUT_STACKED_FIELDS_2_1_NV = 0x20CC;
		/// <summary>
		/// Value for DEVICE_ID_NV symbol (0x20CD).
		/// </summary>
		public const int DEVICE_ID_NV = 0x20CD;
		/// <summary>
		/// Value for UNIQUE_ID_NV symbol (0x20CE).
		/// </summary>
		public const int UNIQUE_ID_NV = 0x20CE;
		/// <summary>
		/// Value for NUM_VIDEO_CAPTURE_SLOTS_NV symbol (0x20CF).
		/// </summary>
		public const int NUM_VIDEO_CAPTURE_SLOTS_NV = 0x20CF;
		/// <summary>
		/// Value for BIND_TO_TEXTURE_RGB_EXT symbol (0x20D0).
		/// </summary>
		public const int BIND_TO_TEXTURE_RGB_EXT = 0x20D0;
		/// <summary>
		/// Value for BIND_TO_TEXTURE_RGBA_EXT symbol (0x20D1).
		/// </summary>
		public const int BIND_TO_TEXTURE_RGBA_EXT = 0x20D1;
		/// <summary>
		/// Value for BIND_TO_MIPMAP_TEXTURE_EXT symbol (0x20D2).
		/// </summary>
		public const int BIND_TO_MIPMAP_TEXTURE_EXT = 0x20D2;
		/// <summary>
		/// Value for BIND_TO_TEXTURE_TARGETS_EXT symbol (0x20D3).
		/// </summary>
		public const int BIND_TO_TEXTURE_TARGETS_EXT = 0x20D3;
		/// <summary>
		/// Value for Y_INVERTED_EXT symbol (0x20D4).
		/// </summary>
		public const int Y_INVERTED_EXT = 0x20D4;
		/// <summary>
		/// Value for TEXTURE_FORMAT_EXT symbol (0x20D5).
		/// </summary>
		public const int TEXTURE_FORMAT_EXT = 0x20D5;
		/// <summary>
		/// Value for TEXTURE_TARGET_EXT symbol (0x20D6).
		/// </summary>
		public const int TEXTURE_TARGET_EXT = 0x20D6;
		/// <summary>
		/// Value for MIPMAP_TEXTURE_EXT symbol (0x20D7).
		/// </summary>
		public const int MIPMAP_TEXTURE_EXT = 0x20D7;
		/// <summary>
		/// Value for TEXTURE_FORMAT_NONE_EXT symbol (0x20D8).
		/// </summary>
		public const int TEXTURE_FORMAT_NONE_EXT = 0x20D8;
		/// <summary>
		/// Value for TEXTURE_FORMAT_RGB_EXT symbol (0x20D9).
		/// </summary>
		public const int TEXTURE_FORMAT_RGB_EXT = 0x20D9;
		/// <summary>
		/// Value for TEXTURE_FORMAT_RGBA_EXT symbol (0x20DA).
		/// </summary>
		public const int TEXTURE_FORMAT_RGBA_EXT = 0x20DA;
		/// <summary>
		/// Value for TEXTURE_1D_EXT symbol (0x20DB).
		/// </summary>
		public const int TEXTURE_1D_EXT = 0x20DB;
		/// <summary>
		/// Value for TEXTURE_2D_EXT symbol (0x20DC).
		/// </summary>
		public const int TEXTURE_2D_EXT = 0x20DC;
		/// <summary>
		/// Value for TEXTURE_RECTANGLE_EXT symbol (0x20DD).
		/// </summary>
		public const int TEXTURE_RECTANGLE_EXT = 0x20DD;
		/// <summary>
		/// Value for FRONT_LEFT_EXT symbol (0x20DE).
		/// </summary>
		public const int FRONT_LEFT_EXT = 0x20DE;
		/// <summary>
		/// Value for FRONT_RIGHT_EXT symbol (0x20DF).
		/// </summary>
		public const int FRONT_RIGHT_EXT = 0x20DF;
		/// <summary>
		/// Value for BACK_LEFT_EXT symbol (0x20E0).
		/// </summary>
		public const int BACK_LEFT_EXT = 0x20E0;
		/// <summary>
		/// Value for BACK_RIGHT_EXT symbol (0x20E1).
		/// </summary>
		public const int BACK_RIGHT_EXT = 0x20E1;
		/// <summary>
		/// Value for FRONT_EXT symbol (FRONT_LEFT_EXT).
		/// </summary>
		public const int FRONT_EXT = FRONT_LEFT_EXT;
		/// <summary>
		/// Value for BACK_EXT symbol (BACK_LEFT_EXT).
		/// </summary>
		public const int BACK_EXT = BACK_LEFT_EXT;
		/// <summary>
		/// Value for AUX0_EXT symbol (0x20E2).
		/// </summary>
		public const int AUX0_EXT = 0x20E2;
		/// <summary>
		/// Value for AUX1_EXT symbol (0x20E3).
		/// </summary>
		public const int AUX1_EXT = 0x20E3;
		/// <summary>
		/// Value for AUX2_EXT symbol (0x20E4).
		/// </summary>
		public const int AUX2_EXT = 0x20E4;
		/// <summary>
		/// Value for AUX3_EXT symbol (0x20E5).
		/// </summary>
		public const int AUX3_EXT = 0x20E5;
		/// <summary>
		/// Value for AUX4_EXT symbol (0x20E6).
		/// </summary>
		public const int AUX4_EXT = 0x20E6;
		/// <summary>
		/// Value for AUX5_EXT symbol (0x20E7).
		/// </summary>
		public const int AUX5_EXT = 0x20E7;
		/// <summary>
		/// Value for AUX6_EXT symbol (0x20E8).
		/// </summary>
		public const int AUX6_EXT = 0x20E8;
		/// <summary>
		/// Value for AUX7_EXT symbol (0x20E9).
		/// </summary>
		public const int AUX7_EXT = 0x20E9;
		/// <summary>
		/// Value for AUX8_EXT symbol (0x20EA).
		/// </summary>
		public const int AUX8_EXT = 0x20EA;
		/// <summary>
		/// Value for AUX9_EXT symbol (0x20EB).
		/// </summary>
		public const int AUX9_EXT = 0x20EB;

		#endregion

		#region GLXBindToTextureTargetMask

		/// <summary>
		/// Value for TEXTURE_1D_BIT_EXT symbol (0x00000001).
		/// </summary>
		public const uint TEXTURE_1D_BIT_EXT = 0x00000001;
		/// <summary>
		/// Value for TEXTURE_2D_BIT_EXT symbol (0x00000002).
		/// </summary>
		public const uint TEXTURE_2D_BIT_EXT = 0x00000002;
		/// <summary>
		/// Value for TEXTURE_RECTANGLE_BIT_EXT symbol (0x00000004).
		/// </summary>
		public const uint TEXTURE_RECTANGLE_BIT_EXT = 0x00000004;

		#endregion

		#region GLXContextFlags

		/// <summary>
		/// Value for CONTEXT_DEBUG_BIT_ARB symbol (0x00000001).
		/// </summary>
		public const uint CONTEXT_DEBUG_BIT_ARB = 0x00000001;
		/// <summary>
		/// Value for CONTEXT_FORWARD_COMPATIBLE_BIT_ARB symbol (0x00000002).
		/// </summary>
		public const uint CONTEXT_FORWARD_COMPATIBLE_BIT_ARB = 0x00000002;
		/// <summary>
		/// Value for CONTEXT_ROBUST_ACCESS_BIT_ARB symbol (0x00000004).
		/// </summary>
		public const uint CONTEXT_ROBUST_ACCESS_BIT_ARB = 0x00000004;

		#endregion

		#region GLXContextProfileMask

		/// <summary>
		/// Value for CONTEXT_CORE_PROFILE_BIT_ARB symbol (0x00000001).
		/// </summary>
		public const uint CONTEXT_CORE_PROFILE_BIT_ARB = 0x00000001;
		/// <summary>
		/// Value for CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB symbol (0x00000002).
		/// </summary>
		public const uint CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB = 0x00000002;
		/// <summary>
		/// Value for CONTEXT_ES2_PROFILE_BIT_EXT symbol (0x00000004).
		/// </summary>
		public const uint CONTEXT_ES2_PROFILE_BIT_EXT = 0x00000004;

		#endregion

		#region GLXDrawableTypeMask

		/// <summary>
		/// Value for WINDOW_BIT symbol (0x00000001).
		/// </summary>
		public const uint WINDOW_BIT = 0x00000001;
		/// <summary>
		/// Value for PIXMAP_BIT symbol (0x00000002).
		/// </summary>
		public const uint PIXMAP_BIT = 0x00000002;
		/// <summary>
		/// Value for PBUFFER_BIT symbol (0x00000004).
		/// </summary>
		public const uint PBUFFER_BIT = 0x00000004;
		/// <summary>
		/// Value for WINDOW_BIT_SGIX symbol (0x00000001).
		/// </summary>
		public const uint WINDOW_BIT_SGIX = 0x00000001;
		/// <summary>
		/// Value for PIXMAP_BIT_SGIX symbol (0x00000002).
		/// </summary>
		public const uint PIXMAP_BIT_SGIX = 0x00000002;
		/// <summary>
		/// Value for PBUFFER_BIT_SGIX symbol (0x00000004).
		/// </summary>
		public const uint PBUFFER_BIT_SGIX = 0x00000004;

		#endregion

		#region GLXErrorCode

		/// <summary>
		/// Value for BAD_SCREEN symbol (1).
		/// </summary>
		public const int BAD_SCREEN = 1;
		/// <summary>
		/// Value for BAD_ATTRIBUTE symbol (2).
		/// </summary>
		public const int BAD_ATTRIBUTE = 2;
		/// <summary>
		/// Value for NO_EXTENSION symbol (3).
		/// </summary>
		public const int NO_EXTENSION = 3;
		/// <summary>
		/// Value for BAD_VISUAL symbol (4).
		/// </summary>
		public const int BAD_VISUAL = 4;
		/// <summary>
		/// Value for BAD_CONTEXT symbol (5).
		/// </summary>
		public const int BAD_CONTEXT = 5;
		/// <summary>
		/// Value for BAD_VALUE symbol (6).
		/// </summary>
		public const int BAD_VALUE = 6;
		/// <summary>
		/// Value for BAD_ENUM symbol (7).
		/// </summary>
		public const int BAD_ENUM = 7;
		/// <summary>
		/// Value for BAD_HYPERPIPE_CONFIG_SGIX symbol (91).
		/// </summary>
		public const int BAD_HYPERPIPE_CONFIG_SGIX = 91;
		/// <summary>
		/// Value for BAD_HYPERPIPE_SGIX symbol (92).
		/// </summary>
		public const int BAD_HYPERPIPE_SGIX = 92;

		#endregion

		#region GLXEventMask

		/// <summary>
		/// Value for PBUFFER_CLOBBER_MASK symbol (0x08000000).
		/// </summary>
		public const uint PBUFFER_CLOBBER_MASK = 0x08000000;
		/// <summary>
		/// Value for BUFFER_CLOBBER_MASK_SGIX symbol (0x08000000).
		/// </summary>
		public const uint BUFFER_CLOBBER_MASK_SGIX = 0x08000000;
		/// <summary>
		/// Value for BUFFER_SWAP_COMPLETE_INTEL_MASK symbol (0x04000000).
		/// </summary>
		public const uint BUFFER_SWAP_COMPLETE_INTEL_MASK = 0x04000000;

		#endregion

		#region GLXHyperpipeAttrib

		/// <summary>
		/// Value for PIPE_RECT_SGIX symbol (0x00000001).
		/// </summary>
		public const uint PIPE_RECT_SGIX = 0x00000001;
		/// <summary>
		/// Value for PIPE_RECT_LIMITS_SGIX symbol (0x00000002).
		/// </summary>
		public const uint PIPE_RECT_LIMITS_SGIX = 0x00000002;
		/// <summary>
		/// Value for HYPERPIPE_STEREO_SGIX symbol (0x00000003).
		/// </summary>
		public const uint HYPERPIPE_STEREO_SGIX = 0x00000003;
		/// <summary>
		/// Value for HYPERPIPE_PIXEL_AVERAGE_SGIX symbol (0x00000004).
		/// </summary>
		public const uint HYPERPIPE_PIXEL_AVERAGE_SGIX = 0x00000004;

		#endregion

		#region GLXHyperpipeMisc

		/// <summary>
		/// Value for HYPERPIPE_PIPE_NAME_LENGTH_SGIX symbol (80).
		/// </summary>
		public const int HYPERPIPE_PIPE_NAME_LENGTH_SGIX = 80;

		#endregion

		#region GLXHyperpipeTypeMask

		/// <summary>
		/// Value for HYPERPIPE_DISPLAY_PIPE_SGIX symbol (0x00000001).
		/// </summary>
		public const uint HYPERPIPE_DISPLAY_PIPE_SGIX = 0x00000001;
		/// <summary>
		/// Value for HYPERPIPE_RENDER_PIPE_SGIX symbol (0x00000002).
		/// </summary>
		public const uint HYPERPIPE_RENDER_PIPE_SGIX = 0x00000002;

		#endregion

		#region GLXPbufferClobberMask

		/// <summary>
		/// Value for FRONT_LEFT_BUFFER_BIT symbol (0x00000001).
		/// </summary>
		public const uint FRONT_LEFT_BUFFER_BIT = 0x00000001;
		/// <summary>
		/// Value for FRONT_RIGHT_BUFFER_BIT symbol (0x00000002).
		/// </summary>
		public const uint FRONT_RIGHT_BUFFER_BIT = 0x00000002;
		/// <summary>
		/// Value for BACK_LEFT_BUFFER_BIT symbol (0x00000004).
		/// </summary>
		public const uint BACK_LEFT_BUFFER_BIT = 0x00000004;
		/// <summary>
		/// Value for BACK_RIGHT_BUFFER_BIT symbol (0x00000008).
		/// </summary>
		public const uint BACK_RIGHT_BUFFER_BIT = 0x00000008;
		/// <summary>
		/// Value for AUX_BUFFERS_BIT symbol (0x00000010).
		/// </summary>
		public const uint AUX_BUFFERS_BIT = 0x00000010;
		/// <summary>
		/// Value for DEPTH_BUFFER_BIT symbol (0x00000020).
		/// </summary>
		public const uint DEPTH_BUFFER_BIT = 0x00000020;
		/// <summary>
		/// Value for STENCIL_BUFFER_BIT symbol (0x00000040).
		/// </summary>
		public const uint STENCIL_BUFFER_BIT = 0x00000040;
		/// <summary>
		/// Value for ACCUM_BUFFER_BIT symbol (0x00000080).
		/// </summary>
		public const uint ACCUM_BUFFER_BIT = 0x00000080;
		/// <summary>
		/// Value for FRONT_LEFT_BUFFER_BIT_SGIX symbol (0x00000001).
		/// </summary>
		public const uint FRONT_LEFT_BUFFER_BIT_SGIX = 0x00000001;
		/// <summary>
		/// Value for FRONT_RIGHT_BUFFER_BIT_SGIX symbol (0x00000002).
		/// </summary>
		public const uint FRONT_RIGHT_BUFFER_BIT_SGIX = 0x00000002;
		/// <summary>
		/// Value for BACK_LEFT_BUFFER_BIT_SGIX symbol (0x00000004).
		/// </summary>
		public const uint BACK_LEFT_BUFFER_BIT_SGIX = 0x00000004;
		/// <summary>
		/// Value for BACK_RIGHT_BUFFER_BIT_SGIX symbol (0x00000008).
		/// </summary>
		public const uint BACK_RIGHT_BUFFER_BIT_SGIX = 0x00000008;
		/// <summary>
		/// Value for AUX_BUFFERS_BIT_SGIX symbol (0x00000010).
		/// </summary>
		public const uint AUX_BUFFERS_BIT_SGIX = 0x00000010;
		/// <summary>
		/// Value for DEPTH_BUFFER_BIT_SGIX symbol (0x00000020).
		/// </summary>
		public const uint DEPTH_BUFFER_BIT_SGIX = 0x00000020;
		/// <summary>
		/// Value for STENCIL_BUFFER_BIT_SGIX symbol (0x00000040).
		/// </summary>
		public const uint STENCIL_BUFFER_BIT_SGIX = 0x00000040;
		/// <summary>
		/// Value for ACCUM_BUFFER_BIT_SGIX symbol (0x00000080).
		/// </summary>
		public const uint ACCUM_BUFFER_BIT_SGIX = 0x00000080;
		/// <summary>
		/// Value for SAMPLE_BUFFERS_BIT_SGIX symbol (0x00000100).
		/// </summary>
		public const uint SAMPLE_BUFFERS_BIT_SGIX = 0x00000100;

		#endregion

		#region GLXRenderTypeMask

		/// <summary>
		/// Value for RGBA_BIT symbol (0x00000001).
		/// </summary>
		public const uint RGBA_BIT = 0x00000001;
		/// <summary>
		/// Value for COLOR_INDEX_BIT symbol (0x00000002).
		/// </summary>
		public const uint COLOR_INDEX_BIT = 0x00000002;
		/// <summary>
		/// Value for RGBA_BIT_SGIX symbol (0x00000001).
		/// </summary>
		public const uint RGBA_BIT_SGIX = 0x00000001;
		/// <summary>
		/// Value for COLOR_INDEX_BIT_SGIX symbol (0x00000002).
		/// </summary>
		public const uint COLOR_INDEX_BIT_SGIX = 0x00000002;
		/// <summary>
		/// Value for RGBA_FLOAT_BIT_ARB symbol (0x00000004).
		/// </summary>
		public const uint RGBA_FLOAT_BIT_ARB = 0x00000004;
		/// <summary>
		/// Value for RGBA_UNSIGNED_FLOAT_BIT_EXT symbol (0x00000008).
		/// </summary>
		public const uint RGBA_UNSIGNED_FLOAT_BIT_EXT = 0x00000008;

		#endregion

		#region GLXStringName

		/// <summary>
		/// Value for VENDOR symbol (0x1).
		/// </summary>
		public const int VENDOR = 0x1;
		/// <summary>
		/// Value for VERSION symbol (0x2).
		/// </summary>
		public const int VERSION = 0x2;
		/// <summary>
		/// Value for EXTENSIONS symbol (0x3).
		/// </summary>
		public const int EXTENSIONS = 0x3;

		#endregion

		#region GLXSyncType

		/// <summary>
		/// Value for SYNC_FRAME_SGIX symbol (0x00000000).
		/// </summary>
		public const uint SYNC_FRAME_SGIX = 0x00000000;
		/// <summary>
		/// Value for SYNC_SWAP_SGIX symbol (0x00000001).
		/// </summary>
		public const uint SYNC_SWAP_SGIX = 0x00000001;

		#endregion

		#region NV_present_video

		/// <summary>
		/// Value for NUM_VIDEO_SLOTS_NV symbol (0x20F0).
		/// </summary>
		public const int NUM_VIDEO_SLOTS_NV = 0x20F0;

		#endregion

	}
}
